module testY0(q0,q1,q2,InA, d0);
	input q0, q1,q2, InA;
	output d0;
	wire q1bar,q2bar,q0bar, InAbar;
	wire tmp1,tmp2,tmp3,tmp4,tmp5;
	wire tmp6,tmp7,tmp8,tmp9,tmp10;
	wire tmp11,tmp12,tmp13,tmp14,tmp15;
	wire tmp16,tmp17,tmp18,tmp19;

	not1 inst25(q0,q0bar);
	not1 inst26(q1,q1bar);
	not1 inst27(q2,q2bar);
	not1 inst28(InA,InAbar);
/*
//second part of Y0
	xor2 inst1(q1,InA, tmp1);
	nand3 inst2(q2,q0,tmp1,tmp2);
//first part of Y0
	xor2 inst3(q1,InA,tmp3);
	not1 inst4(tmp3,tmp4);
	nand2 inst5(q0bar,tmp4,tmp5);
//Y0
	nand2 inst6(tmp2,tmp5,d0);
*/

//first part of Y0
	nand3 inst1(q1bar,q0bar,InAbar, tmp1);
//second part of Y0
	nand3 inst2(q1,q0bar,InA,tmp2);
//third part of Y0
	nor2 inst3(q1,q0bar,tmp3);
	nand3 inst4(q2,tmp3, InA, tmp4);
//Y0
	nand3 inst5(tmp1,tmp2,tmp4,d0);
	//assign d0 = ((~q0)&(~(q1^InA)))|(q2&q0&(q1^InA));
endmodule
